/**
 * 测试本代码步骤：
 * 1.进入typescript 目录执行 tsc -w
 * 2.服务端启动：执行 nodemon .\dist\index.js  使本代码以后台服务方式运行  (或者使用 ts-node 直接运行index.ts : ts-node src\RunSocket.ts)
 * 3.客户端页面：以服务方式运行 testSocket.html
 * 
 * 
 */
export default class SocketMain {
    testIO() {
        console.log("进入 socket.io 测试");

        const httpServer = require("http").createServer();
        const io = require("socket.io")(httpServer, { cors: true });
        //socket服务器监听连接，表示已经建立连接
        io.on("connection", (socket: any) => {

            //向当前请求连接的客户端发送一个消息
            //socket.emit('request',/**/);
            //向所有客户端发送消息
            //io.emit('msg',/**/);
            //监听客户端发来的消息
            socket.on('sends', (data: any) => {
                console.log('客户端：' + data);
                //将客户端发来的消息推送给全部的客户端
                io.emit('msg', "服务器返回的：" + data);

                //将客户端发来的消息推送给指定的客户端
                // socket.emit('msg', "服务器：" + data);
            })
        })
        httpServer.listen(3000);
    }

    testWs() {
        console.log("进入 websocket 测试");


        //创建后台服务器
        let WebSocketServer = require('websocket').server;
        let httpServer = require('http').createServer();

        //创建WebSocket服务器
        let wsServer = new WebSocketServer({
            //选择刚刚创建的http后台服务器为WebSocket服务器
            httpServer: httpServer
        })

        //WebSocket服务器建立请求连接
        wsServer.on('request', function (request: any) {
            //当前的连接
            let connection = request.accept(null, request.origin);
            connection.sendUTF('服务器发来消息说已经建立连接');
            //监听有信息来的时候
            connection.on('message', function (message: any) {
                console.log(message);

                if (message.type === 'utf8') {
                    connection.sendUTF("服务器返回的消息----客户端的招呼：" + message.utf8Data);
                }
                else if (message.type === 'binary') {
                    connection.sendBytes(message.binaryData);
                }

            });
            //监听关闭
            connection.on('close', function (reasonCode: any, description: any) {
                console.log('连接关闭')
            })
        })

        httpServer.listen(3000, () => {
            console.log('服务器开启成功，请打开localhost：3000');
        })

    }

}
